Prevent the destruction of the menu label on page removal
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>
Mon, 22 Mar 2010 18:11:05 +0000 (14:11 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 22 Mar 2010 18:11:05 +0000 (14:11 -0400)
In certain cases the menu label of a notebook page will be reused after the
page was removed from the notebook, for instance when a page is dragged from
one notebook to another. For such cases make sure that the menu label isn't
destroyed as part of destroying the menu item it was in.

gtk/gtknotebook.c

index a7c1b3a64667ef2dd29f2de033de7f0a0c434401..d038cc5f53c3d0867f4128750b532f272f433936 100644 (file)
@@ -4656,17 +4656,20 @@ gtk_notebook_real_remove (GtkNotebook *notebook,
       if (destroying)
         gtk_widget_destroy (tab_label);
       g_object_unref (tab_label);
-    } 
+    }
 
   if (notebook->menu)
     {
-      gtk_container_remove (GTK_CONTAINER (notebook->menu), 
-                           page->menu_label->parent);
+      GtkWidget *parent = page->menu_label->parent;
+
+      gtk_notebook_menu_label_unparent (parent, NULL);
+      gtk_container_remove (GTK_CONTAINER (notebook->menu), parent);
+
       gtk_widget_queue_resize (notebook->menu);
     }
   if (!page->default_menu)
     g_object_unref (page->menu_label);
-  
+
   g_list_free (list);
 
   if (page->last_focus_child)